package com.topgay.service;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.topgay.util.BoardUtilities;
import com.topgay.dao.MessageDAO;
import com.topgay.domain.Member;
import com.topgay.domain.Message;
import com.topgay.util.PagingBean;

@Service
public class MessageServiceImpl implements MessageService {

	@Autowired
	private MessageDAO dao;

	@Override
	public int messageSend(Message message) throws SQLException {
		return dao.insertMessage(message);
	}

	@Override
	public Member getMemberById(String id) throws SQLException {
		return dao.selectMemberById(id);
	}

	@Override
	public List<Member> getMemberList() throws SQLException {

		return dao.getMemberList();

	}
	//받은 메시지함 
	@Override
	public Map getMessageById(String id, int pageNo) throws Exception {
		// Map은 인터페이스고 Hasmap은 그것을 구현한 클래스
		HashMap<String, Object> map = new HashMap<>();

		map.put("id", id);
		map.put("pageNo", pageNo);

		map.put("contentPerPage", BoardUtilities.CONTENT_PER_PAGE);

		List<Message> list = dao.getMessageById(map);
		//
		// map.put("list", list);
		// // 2. PagingBean객체를 생성 ( 필요 정보 : 전체 게시물의 개수, 보고자 하는 페이지 번호)
		// // 2-1 : DAO의 메소드를 이용해 전체 게시물 수 조회
		// int totalContent = qnaBoardDAO.selectTotalContent();
		// // 2-2 : PagingBean 객체 생성
		// PagingBean pagingBean = new PagingBean(totalContent, page);
		// map.put("pagingBean", pagingBean);

		HashMap<String, Object> map2 = new HashMap<>();

		map2.put("list", list);
		
		//id값으로 들어온 전체 쪽지 개수 조회
		
		int totalContent = dao.getTotalMessageNumReceive(id);
		
		PagingBean pagingBean = new PagingBean(totalContent, pageNo);
		map2.put("pagingBean", pagingBean);
		return map2;
	}
	
//	보낸 메시지함 
	
	//전체 컨텐츠 수를 조회해와야 한다!!!
	@Override
	public Map getSendMessageById(String id, int pageNo) throws Exception {

		HashMap<String, Object> map = new HashMap<>();
		
		map.put("id", id);
		map.put("pageNo", pageNo);
		map.put("contentPerPage", BoardUtilities.CONTENT_PER_PAGE);

		List<Message> list = dao.getSendMessageById(map);
		//
		// map.put("list", list);
		// // 2. PagingBean객체를 생성 ( 필요 정보 : 전체 게시물의 개수, 보고자 하는 페이지 번호)
		// // 2-1 : DAO의 메소드를 이용해 전체 게시물 수 조회
		// int totalContent = qnaBoardDAO.selectTotalContent();
		// // 2-2 : PagingBean 객체 생성
		// PagingBean pagingBean = new PagingBean(totalContent, page);
		// map.put("pagingBean", pagingBean);

		HashMap<String, Object> map2 = new HashMap<>();

		map2.put("list", list);
		
		int totalContent = dao.getTotalMessageNumSend(id);
		
		PagingBean pagingBean = new PagingBean(totalContent, pageNo);
		map2.put("pagingBean", pagingBean);
		return map2;
	}

	@Override
	public Message getContentByNum(int num) throws SQLException {
		return dao.selectContentByNum(num);
	}

	@Override
	public void deleteMessageByNum(int num) throws SQLException {
		dao.deleteMessageByNum(num);
	}

}
